iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
0

什麼已經18天了!?

前面幾天已經寫了好幾支API,有三支比較小的API,在這快速把它帶過,不然後面前端跟上線的篇幅會被壓縮到

會員登出API

[GET] api/user/logout
後端直接把cookie token這個key清空就好~

hander/user.go

// GetUserLogout GetUserLogout
func GetUserLogout(c *gin.Context) {
	c.SetCookie(jwt.Key, "", -1, "/", config.Val.Domain, false, true)

	res.Success(c, gin.H{})
}

取得全部群組清單API

[GET] api/task/done
回傳值:

{
    "data": {
        "groups": [
            {
                "id": 1,
                "name": "A"
            }
        ]
    },
    "result": true
}

hander/api.go

// GetGroupsName GetGroupsName
func GetGroupsName(c *gin.Context) {
	userID := c.GetString("user_id")

	groups, err := model.TaskModel.GetGroup(userID)
	if err != nil {
		log.WithFields(log.Fields{
			"user_id":    userID,
			"origin_err": err.Error(),
		}).Error("GetGroup error")
		res.SystemError(c, res.ErrSystemCode, gin.H{})
		return
	}

	type groupNameList struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
	}
	data := []groupNameList{}
	for _, g := range groups {
		data = append(data, groupNameList{
			ID:   g.ID,
			Name: g.Name,
		})
	}

	res.Success(c, gin.H{
		"groups": data,
	})
}

任務完成API

任務可以打勾把狀態改為完成,在清單上就不會再出現,但報表一樣會統計它的時間。

[PUT] api/task/done

hander/api.go

// TaskDone TaskDone
func TaskDone(c *gin.Context) {
	var params struct {
		ID int `json:"id" binding:"required"`
	}

	if err := c.ShouldBindJSON(&params); err != nil {
		res.BadRequest(c, res.ErrParamsCode, gin.H{
			"msg": err.Error(),
		})
		return
	}

	if err := model.TaskModel.Done(params.ID, c.GetString("user_id")); err != nil {
		log.WithFields(log.Fields{
			"origin_err": err.Error(),
		}).Error("db error")
		res.SystemError(c, res.ErrSystemCode, gin.H{})
		return
	}

	res.Success(c, gin.H{})
}

今天的commit

明天開始會進行前端的開發囉~


上一篇
Day 17 DB 優化
下一篇
Day 19 Vue.js
系列文
Golang & Vue.js 30天從0打造服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言